/** 全局枚举 */

/***
 * 地图瓦片枚举
 */
export enum TILE_TYPE_ENUM {
  /** 横墙 */
  WALL_ROW = 'WALL_ROW',
  /** 竖墙 */
  WALL_COLUMN = 'WALL_COLUMN',
  /** 左上墙 */
  WALL_LEFT_TOP = 'WALL_LEFT_TOP',
  /** 右上墙 */
  WALL_RIGHT_TOP = 'WALL_RIGHT_TOP',
  /** 左下墙 */
  WALL_LEFT_BOTTOM = 'WALL_LEFT_BOTTOM',
  /** 右下墙 */
  WALL_RIGHT_BOTTOM = 'WALL_RIGHT_BOTTOM',
  /** 悬崖 左边 */
  CLIFF_LEFT = 'CLIFF_ROW_START',
  /** 悬崖 中间 */
  CLIFF_CENTER = 'CLIFF_ROW_CENTER',
  /** 悬崖 右边 */
  CLIFF_RIGHT = 'CLIFF_ROW_END',
  /** 地板 */
  FLOOR = 'FLOOR',
}

/**
 * 事件名称
 */
export enum EVENT_NAME_ENUM {
  /** 切换到下一关 */
  NEXT_LEVEL = 'next_level',
  /** 控制角色移动 */
  CONTROLLER_MOVE = 'controller_move',
  /** 角色移动结束 */
  PLAYER_MOVE_END = 'player_move_end',
  /** 角色初始化 完成 因为生成玩家和敌人都是异步的，为了让敌人在玩家初始化时能够跟随角色移动方向 */
  PLAYER_BORN = 'player_born',
  /** 攻击玩家事件 */
  ATTACK_PLAYER = 'attack_player',
  /** 敌人被攻击事件 */
  ATTACK_ENEMY = 'attack_enemy',
  /** 门打开 */
  OPEN_DOOR = 'open_door',
  /** 显示烟雾 */
  SHOW_SMOKE = 'show_smoke',
  /** 震动 */
  SCREEN_SHAKE = 'screen_shake',
}

/**
 * 方向
 */
export enum DIRECTION_ENUM {
  TOP = 'TOP',
  BOTTOM = 'BOTTOM',
  LEFT = 'LEFT',
  RIGHT = 'RIGHT',
  TURNLEFT = 'TURNLEFT', // 左边转身
  TURNRIGHT = 'TURNRIGHT', // 右边转身
}

/** 玩家方向 映射数值 */
export const DIRECTION_ORDER_ENUM = {
  TOP: 0,
  BOTTOM: 1,
  LEFT: 2,
  RIGHT: 3,
}

export const DIRECTION_NUM_ENUM = {
  0: 'TOP',
  1: 'BOTTOM',
  2: 'LEFT',
  3: 'RIGHT',
}

/**
 * 动画图变量触发类型
 */
export enum ANIMATION_GRAPH_TYPE_ENUM {
  NUMBER = 'number',
  TRIGGER = 'trigger',
}

/**
 * 实体状态
 * 比如玩家 怪物的状态
 */
export enum ENTITY_STATE_ENUM {
  IDLE = 'idle', // 默认
  TURNLEFT = 'turnleft', // 左旋转
  TURNRIGHT = 'turnright', // 右旋转
  DIRECTION = 'direction', // 移动方向
  BLOCKFRONT = 'blockfront', // 向前撞击 四个方向
  BLOCKBACK = 'blockback', // 向后撞击 四个方向
  BLOCKRIGHT = 'blockright', // 向右撞击 四个方向
  BLOCKLEFT = 'blockleft', // 向左撞击 四个方向
  BLOCKTURNLEFT = 'blockturnleft', // 左旋转时撞击 四个方向
  BLOCKTURNRIGHT = 'blockturnright', // 右旋转时撞击 四个方向
  ATTACK = 'attack', // 攻击
  DEATH = 'dead', // 在地上死亡
  AIRDEATH = 'airdead', // 掉入陷阱在空中死亡
  SPIKES_CUR_COUNT = 'spikes_cur_count', // 当前地刺数量
  SPIKES_TOTAL_COUNT = 'spikes_max_count', // 地刺总数
}

/**
 * 实体类型
 */
export enum ENTITY_TYPE_ENUM {
  /** 玩家 */
  PLAYER = 'player',
  /** 敌人 木骷髅 */
  WOODENSKELETON = 'woodenSkeleton',
  /** 敌人 铁骷髅 */
  IRONSKELETON = 'ironSkeleton',
  /** 门 */
  DOOR = 'door',
  /** 地裂陷阱 */
  BURST = 'burst',
  /** 地刺 及对应数量 */
  SPIKES_ONE = 'spikes_one',
  SPIKES_TWO = 'spikes_two',
  SPIKES_THREE = 'spikes_three',
  SPIKES_FOUR = 'spikes_four',
  /** 烟雾 */
  SMOKE = 'smoke',
}

// 地刺总数映射
export enum SPIKES_TYPE_MAP_TOTAL_COUNT_ENUM {
  spikes_one = 2,
  spikes_two = 3,
  spikes_three = 4,
  spikes_four = 5,
}

// 地刺子状态机
export enum SPIKES_SUB_STATE_ENUM {
  ZERO = 'ZERO',
  ONE = 'ONE',
  TWO = 'TWO',
  THREE = 'THREE',
  FOUR = 'FOUR',
  FIVE = 'FIVE',
}

// 地刺子状态机映射
export const SPIKES_COUNT_MAP_NUMBER_ENUM = {
  0: 'ZERO',
  1: 'ONE',
  2: 'TWO',
  3: 'THREE',
  4: 'FOUR',
  5: 'FIVE',
}
